home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / DEMOS / SWARS / !Swars / !Help < prev    next >
Text File  |  1996-03-17  |  3KB  |  82 lines

  1. /********************************************************************/
  2. /*     -=[FlY'96]=- presents !Swars a StarWars scroller tutorial ...*/
  3. /********************************************************************/
  4.  
  5. Yeah third production :)
  6.  
  7. This piece of code demonstrate the starwars scrolling effect.
  8.  
  9. I include the sources (in C) for you all other beginner that maybe 
  10. wanted to code such little things ;)
  11.  
  12. Ok let's have a bit of explanations:
  13.     This effect is mainly based on the shifted step principle
  14.     (also called fixed point).So what's fixed point ???
  15.     The f.p method consists in precalculating the manneer of how
  16.     you will read the image to display it.have an example :
  17.      
  18.      +--------+   +---+  if you want to display image A but
  19.      |   A    |   | B |  into B box on screen with keeping
  20.      |        |   |   |  the appearance of A, you'll have to
  21.      +--------+   +---+  read 1 pixel on 2 for each line of
  22.      A ... Why ? line length of A is 10 and of B is 5 so the
  23.      mathematics is simple 10/5=2 so it's simple you read 1
  24.      then skip one , then read 1 then skip one...
  25.      You will then do read p1 read p3 read p5 ...p[i] p[i+2]
  26.      and 2 come from the 10/5 ! Got it ?
  27.      
  28.      So why to shift the step ? just becoz we work on integers
  29.      and that if we got step=0.5 we will always read the pixel
  30.      0 of each line wich will look awful ...
  31.      The trick is then : (A_linelenght LSL by 8)/B_linelength
  32.      after that you'll always have to shift back (LSR) by 8 too.
  33.      
  34.      note that you'll need a variable to sum the steps (LSR) at
  35.      each steps of the loop ...
  36.      
  37.      So the starwars is only a triangle on wich we deform a picture
  38.      simply by calculating a step for each line of the triangle.
  39.      we have a start point for each line and also a line length.
  40.      All we have to do is (for each line) :
  41.          go to start point at the screen.
  42.          accumulator=0;
  43.          for i=0 to triangle_linelength 
  44.          {
  45.             read pixel in buffer from xposition;
  46.             accumulator+=step_for_this_line;
  47.             xposition <- (accumulator) >> 8;    
  48.             display pixel at position_to_screen;
  49.             position_to_screen+=1;    
  50.                 }
  51.          And that's all (well i guess , I don't look my code :)... )
  52.          
  53.          
  54. IF this is not clear feel free to email me ( that's not very clear but
  55. I've at least tried to explain the effect ) but hqve first a look to the
  56. C source code , it's quiet self-explaining ...
  57.  
  58. SORRY:
  59.     The present code is not that fast becoz it's not ARM pure juice.
  60.     Sorry about that... It may then not run very smoothly on many
  61.     Acorns ... It runs ok (slow) on my A5000 but I don't know for the 
  62.     other machines...
  63.     
  64. NOTE:
  65.     *This little demo is mostly intended for beginners like me that have
  66.     always wanted to have sources to understand the effects and maybe
  67.     (who knows ?) become one day a good coder :)
  68.     *As you can see in the code you can deform the picture on other
  69.     objects than triangles if you define them well (no 0<= in p.stop)...
  70.     
  71. GREETINGS:
  72.     Just want to say hello to some friends around: Daniel who greatly 
  73.     helped me in my first steps, Armoric the master of 3Kb Basic ARM
  74.     powered effects :) , BASS (lo John, Karl, Gil and the others...),
  75.     And all the demo scene (if there is any ...;) ) !
  76.     Plus all the friends in the scrolly :)
  77.  
  78. ADDRESS:
  79.     if u want just drop me a mail to ahuet@ulb.ac.be ... 
  80.     ( available to august 96 at least )
  81. <EOF>
  82.